module teapo.storage.attached.indexedDB { export class StorageDetect implements attached.StorageDetect { private _window: { indexedDB: IDBFactory; } = window) { metadata: attached.StorageDetect.BootState,
access: StorageAccess) => void) { if (!this._window.indexedDB) { callback(new Error('No indexedDB object exposed from window.'), null, null); if (typeof this._window.indexedDB.open !== 'function') { callback(new Error('No open method exposed on indexedDB object.'), null, null); var dbName = uniqueKey || 'teapo';
var openRequest = this._window.indexedDB.open(dbName, 1);
openRequest.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'detectStorageAsync-open'), null, null);
openRequest.onupgradeneeded = (versionChangeEvent) => { var db: IDBDatabase = openRequest.result;
var filesStore = db.createObjectStore('files', { keyPath: 'path' }); var metadataStore = db.createObjectStore('metadata', { keyPath: 'property' }); openRequest.onsuccess = (event) => { var db: IDBDatabase = openRequest.result;
var transaction = db.transaction('metadata'); transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'detectStorageAsync-openRequest.onsuccess-transaction'), null, null);
var metadataStore = transaction.objectStore('metadata'); var editedUTCRequest = metadataStore.get('editedUTC'); editedUTCRequest.onerror = (errorEvent) => { callback(null, null, null);
editedUTCRequest.onsuccess = (event) => { var result: MetadataData = editedUTCRequest.result;
callback(null, null, null);